package com.li.onjava8.concurrent.es;

import com.li.onjava8.concurrent.es.task.InterferingTask;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.IntStream;

/**
 * @author li
 * @date 2023/10/30 14:27
 */
public class SingleThreadExecutor3 {
    public static void main(String[] args) {
        //现在我们每次都得到一致的结果, 尽管InterferingTask缺乏线程安全性
        //这是SingleThreadExecutor的主要好处: 因为它一次运行一个任务，这些任务不会相互干扰，因此强加了线程安全性
        ExecutorService es = Executors.newSingleThreadExecutor();
        IntStream.range(0, 10)
                .mapToObj(InterferingTask::new)
                .forEach(es::execute);
        es.shutdown();
    }
}
